package Example;

import java.io.*;
import java.util.Scanner;



public class Demo03 {
    public static void main(String[] args) {
//        文件搜索 根据 词 来搜索
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要搜索的路径: ");
        String path = scanner.next();
        System.out.println("请输入你要查找的词: ");
        String word = scanner.next();
        scanner.close();

        File rootFile = new File(path);
        if (!rootFile.isDirectory()){
            System.out.println("当前路径有误! ");
            return;
        }
        search(rootFile,word);
    }

    private static void search(File rootFile , String word){
        File[] files = rootFile.listFiles();
        if (files == null){
//            空目录
            return;
        }
        for(File file : files){
            if (file.isFile()){
//                如果是文件 进行进一步的根据 SearchWord 来搜索
                matchWord(file,word);
            } else if (file.isDirectory()) {
//                如果是目录(文件夹) 进行进一步的递归
                search(file,word);
            }
        }
    }

    private static void matchWord(File file, String word) {
//        将文件读取 与 目标word进行比对
        try(Reader reader = new FileReader(file)){
            StringBuffer stringBuffer = new StringBuffer();
            char[] buffer = new char[1024]; // 因为 Reader是字符流 所以用char
            int numCharsRead;
            while ((numCharsRead = reader.read(buffer)) != -1) {
                stringBuffer.append(buffer, 0, numCharsRead);
            }
            // 循环结束, 此时文件所有的内容, 就都进入 stringBuilder 了
            String fileContent = stringBuffer.toString();
            if (fileContent.contains(word)) {
                System.out.println("Word found!");
            } else {
                System.out.println("Word not found.");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
